home *** CD-ROM | disk | FTP | other *** search
/ Amiga CD-Sensation: Demos Are Forever / Amiga CD-Sensation - Ausgabe 1 - Demos Are Forever (1996)(GTI - Schatztruhe)(DE)[!].iso / SYS / libs / compressors / xpkMASH.doc next >
Text File  |  1995-08-27  |  7KB  |  179 lines

  1.  
  2.                                     MASH
  3.                    Another LZRW based compression algorithm
  4.                         Version 1.98 (30 Mar 1995)
  5.                       Copyright 1994 Zdenek Kabelac
  6.  
  7.                                 License/Disclaimer
  8.                                 ------------------
  9.               xpkMASH is (C) Copyright 1994 by Zdenek Kabelac.
  10.  
  11.     This package may be freely distributed, as long as it is kept in its
  12.  original, complete, and unmodified form.  It may not be distributed by itself
  13.  or in a commercial package of any kind without my written permission.
  14.  
  15.  
  16.  
  17.                                  Instalation
  18.                   -----------
  19.  
  20.      Make sure the directory libs:compressors does exist and then just copy
  21.  xpkMASH.library to libs:compressors.  You also need to have the XPK package
  22.  installed, it is available from several sources including Fish disks.
  23.  Now you have two versions to choose from - select the version you'd like to 
  24.  use (don't forget to install that processor first :-) and rename it to
  25.  xpkMASH.library.
  26.  
  27.  
  28.                   Description
  29.                   -----------
  30.  
  31.      xpkMASH is an XPK compression sublibrary whose main purpose is to
  32.  decrunch fast and have an excellent crunch factor.  The sublib is using
  33.  LZ77 compression and a special method to write matches...  MASH now
  34.  normally uses 256KB for its tables, but reduces the size of the
  35.  hashtable if memory is scarce.  (it could crunch even with 64KB+4KB)
  36.  Compressing with a small hashtable naturally is very very slow.
  37.  Default chunk size is 64KB.  The compressor uses lazy match evaluation
  38.  which slowed it down quite a bit.
  39.  
  40.    This sublibrary has several modes:
  41.  
  42.          Mode          Strings to be searched
  43.         ------        ------------------------
  44.           0-09        1     ;high speed - but low CF
  45.      10-19          2
  46.          20-29          4
  47.      30-39          8     ;good for most executables
  48.          40-49         16
  49.      50-59         32
  50.      60-69         64
  51.          70-79        128     ;this should be used for text files
  52.          80-89        256
  53.          90-99        512
  54.         100          1024     ;the best, the slowest
  55.  
  56.  The second column is showing, how many matches should be compared
  57.  - the more searched strings - the better results you will get.
  58.  formula is simple 2^(MODE/10).
  59.  MODE 70 is now runing as fast as NUKE on my A1200
  60.  and if you want to use some higher modes - you will get result better
  61.  for only a few bytes, but slowdown will be very noticeable.
  62.  (But for crunching I'm always using the best mode anyway :-))
  63.  
  64.               !!! The source for this version is not released !!!
  65.     if you want to see it anyway, drop me an e-mail and I will send you it.
  66.  
  67.  I still want to do some improvements. Probably even change format of stored
  68.  data to reach better decrunch speed and possibly use some more MC68020
  69.  instructions in this case. You don't have to worry, this library will also
  70.  decrunch old format. Send me an e-mail what you'd like to see in newer
  71.  version of this library. But this newer format will always need
  72.  256KB of memory so it could be a problem for some people.
  73.  If you think this library is worth some money, you could send them
  74.  It will speed up development :-)
  75.  
  76.  Here is a small benchmark list for those bechmarks' lovers :-)
  77.  
  78.  Evaluated on a A3000/30/25 with 2MB ChipMem and 4MB SCRAM [standard
  79.  XPK benchmark system] by XBench using AmigaVision [594712 bytes]
  80.  
  81.  Packer      UComp   Comp    CF     CTime    CSpd     UTime    USpd 
  82.  68020
  83.  mash.100   594712 313612 47.3%     27.86   21346      1.42  418811
  84.  mash.30    594712 322012 45.9%      7.10   83762      1.45  410146
  85.  mash.0     594712 332360 44.2%      5.58  106579      1.49  399135
  86.  
  87.  Packer      UComp   Comp    CF     CTime    CSpd     UTime    USpd
  88.  68000
  89.  mash.100   594712 313612 47.3%     27.96   21270      1.47  404565
  90.  mash.30    594712 322012 45.9%      7.18   82828      1.50  396474
  91.  mash.0     594712 332360 44.2%      5.65  105258      1.54  386176
  92.  
  93.  I hope you like this :-) 
  94.  
  95.  Slower mode of packing has the speed of version 1.26 
  96.  (it's activated when is not possible to allocate 256KB of RAM for large buffer)
  97.  
  98.              UComp   Comp    CF      Time    KB/s
  99.  
  100.  mash.100   594712 313908 47.3%     65.42    9090
  101.  mash.000   594712 332652 44.1%      8.59   69233
  102.  
  103.                            "Thank you"s must go to:
  104.                            ------------------------
  105.  Urban Dominik Müller    <umueller@amiga.icu.net.ch>
  106.    for XPK standart. (Try to responce my e-mails sometimes :-))
  107.  
  108.  Christian von Roques <roques@ipd.info.uni-karlsruhe.de>
  109.    for correcting some parts of this document file,
  110.    and also for releasing his source, so I could use some parts
  111.    of it in my library (xpk interface).
  112.  
  113.  Karsten Dageförde <dagefoer@ibr.cs.tu-bs.de>
  114.    for making benchmarks and other cooperation
  115.  
  116.  more people should be in this list - authors of Zip, Lha, Arj, ...
  117.  but I would have to make some deep research for them.
  118.  
  119.                     History
  120.  V0.5   Many errors, the biggest problem was bad writing of bits string.
  121.  
  122.  V0.7   Most of errors has been debuged
  123.  
  124.  V0.8   Last byte has not been saved
  125.  
  126.  V0.9   On the first look normaly working version of the sublibrary with
  127.         fixed hash table - size 64KB
  128.  
  129.  V1.0   The big improvement in memory allocating
  130.         memory is allocated before each chunk compresion and deallocated
  131.         after this chunk is compressed (usefull if you have installed
  132.         statram.device)
  133.  
  134.  V1.01  Hash size was increased from 64KB to 128KB (16 bits)
  135.  
  136.  V1.05  Hash is allocated dynamicaly - when is large memory free - large hash
  137.         is used. Starting with 128KB, 64KB, 32KB, .... ,512 bytes
  138.  
  139.  V1.15  Seems to work perfectly for me
  140.  
  141.  First public release:
  142.  
  143.  V1.16  I suppose last bug has been removed - value of register D4
  144.         was not saved on return. Also most of long word instruction has
  145.         been rewritten to word oriented instructions (useful for MC68000)
  146.  
  147.  V1.26  Several speed up improvements - decompression goes about 50 kB faster
  148.  
  149.  Unreleased
  150.  
  151.  V1.30  New crunch mode - uses 256KB of memory for its buffers
  152.  
  153.  V1.40  Removed checking of two bytes in match
  154.         its not needed when two byte hash is used
  155.  
  156.  V1.53  Removed zero length write when chunk is uncrunchable
  157.         Diavolo is a little bit odd and uses this value for DIVS
  158.         even when its not valid -> caused GURU
  159.  
  160.  V1.61  Removed bsr call from scaning rutine.
  161.  
  162.  Released
  163.  
  164.  V1.77  Prepared for release - there is still many things to improve,
  165.         but it has already very good speed. So I'm releasing this
  166.         version.
  167.  
  168.  V1.98  Well many new checks have been added to prevent so deep scan
  169.         when better match cann't be found. Even a little bit better
  170.         alghorithm was used for lazy_eval -> better CF.
  171.  
  172.                                  Contact Address
  173.                                  ---------------
  174.  
  175.        What is worth doing is worth                   Zdenek Kabelac      
  176.    the trouble of asking somebody to do.                Policna 135      //
  177.       WWW  : http://www.muni.cz/~kabi/          75701 Valasske Mezirici //
  178.      E-Mail: kabi@informatics.muni.cz                  Czech Republic \X/
  179.